$(function(){
    // 1、全选按钮模块
    // 2、每一行的删除模块
    // 3、每一行的数量增减按钮，同时小计的数目会发生变化
    // 4、底部删除选中的商品模块
    // 5、底部删除清空模块
    // 6、底部总价模块和商品个数
    // 7、底部结算模块

    // 1、全选按钮模块
    // 点击最上面的全选，下面商品中会全部选中，底部的全选按钮也要选中，同理底部的也一样
    $(".all-first").change(function(){
        // console.log($(this).prop("checked"));
        $(".all , .all-first").prop("checked",$(this).prop("checked"));
        getSum();
        if($(this).prop("checked")) {
            $(".all").parents("tr").addClass("bg");
        } else {
            $(".all").parents("tr").removeClass("bg");
        }
    })
    // 当商品中的复选框不全为ture,则顶部的变为false
    // 选择选中的复选框的个数 :checked
    $(".all").change(function(){
        // 判断选中的复选框的个数是否等于总的全选按钮
        // alert(1)
        // 利用一个变量，当个数小于总数的话就让该变量取false
        var flag = true;
        if($(".all:checked").length < $(".all").length) {
            flag = false;
        }
        $(".all-first").prop("checked",flag);
        getSum();
        // 如果选中则改变颜色
        if($(this).prop("checked")) {
            $(this).parents("tr").addClass("bg");
        } else {
            $(this).parents("tr").removeClass("bg");
        }
        // 如果是则将顶部的全选按钮选中，否则不选中
    })
    // 2、每一行的删除模块
    $("table .del").click(function(){
        $(this).parent().remove();
        getSum();
        // del();
        // 如果商品中已经全部删除完毕，则调用del函数 判断现在商品是否为0，如果是，则归为全选按钮
        if($("tbody tr").length === 0) {
            del();
        }

    })

    // 3、每一行的数量增减按钮（重难点：要将每一次加减操作中的自定义属性值获得，并判断大小赋值给另外一个变量，并且只有大的值进行以下的自增自减操作，并且要将自减自增操作获得到的变量值传递给自定义属性值大的属性）（卡的问题点：每次获得的变量值都被所有自定义属性值调用，如果不进行属性值的传递则会停留在某个位置不动）
    // 动态获得小计单价（未成功）
    /* for(var i = 0 ; i < $(".press").length ; i++) {
        var index = i;
        $(".press").eq[index].prop("innerHTML",$(".press").eq[index].siblings(".single").prop("innerHTML"));
    } */
    // 利用鼠标移动到ul上进行获得ul 中input的数然后进行点击事件
    // 没有实现自己更改数目功能
    // 减操作
    // 底部总价
    var all_total = 0;
    /* $(".sub").click(function(){
        var num;
        var num_sub = parseInt($(this).attr("num"));
        // console.log(num_sub);
        var num_sum = parseInt($(this).siblings(".sum").attr("num"));
        // 获得每一次点击的单价
        var press = $(this).parent().parent().siblings(".single").prop("innerHTML");
        console.log(press);
        // console.log(num_sum);
        //判断大小
        num = num_sub > num_sum ? num_sub : num_sum;
        
        // console.log(num);
        if(num > 0) {
            num--;
            // 改变数量的变化
            $(this).siblings().children("input").prop("value",num);
            // 改变小计
            // 转换为浮点型，首先要parseFloat
            var total = parseFloat(press.substr(1) * num).toFixed(2);
            console.log(parseFloat(press.substr(1) * num).toFixed(2));
            $(this).parent().parent().siblings(".press").prop("innerHTML","&yen;"+total);
            if(num_sub >= num_sum) {
                $(this).attr("num",num);
            }else {
                $(this).siblings(".sum").attr("num",num);
            }
        }   
    }) */
    // 加操作
    /* $(".sum").click(function(){
        // console.log($(this).data("num")===1);
        var num;
        var num_sum = parseInt($(this).attr("num"));
        var num_sub = parseInt($(this).siblings(".sub").attr("num"));
        // 获得单价
        var press = $(this).parent().parent().siblings(".single").prop("innerHTML");
        //判断大小
        num = num_sub > num_sum ? num_sub : num_sum;
        // console.log(num);
        if(num >= 0) {
            num++;
            // 改变数量的变化
            $(this).siblings().children("input").prop("value",num);
            // 改变小计的变化
            // 转换为浮点型，首先要parseFloat
            var total = parseFloat(press.substr(1) * num).toFixed(2);
            // 获得底部总价
            // console.log(parseFloat(press.substr(1) * num).toFixed(2));
            $(this).parent().parent().siblings(".press").prop("innerHTML","&yen;"+total);
            if(num_sum >= num_sub) {
                $(this).attr("num",num);
            }else {
                $(this).siblings(".sub").attr("num",num);
            }
        } 
    }) */
    // 加减操作
    // 加操作
    $(".sum").click(function(){
        // var n = $(this).siblings(".input").children("input").val();
        var n = $(this).siblings(".input").children("input").prop("value");        
        // 获得单价
        // var press = $(this).parent().parent().siblings(".single").prop("innerHTML");
        var press = $(this).parents("td").siblings(".single").text();
        if(n >= 0) {
            n++;
            // $(this).siblings(".input").children("input").val(n);
            $(this).siblings(".input").children("input").prop("value",n);
            var total = parseFloat(press.substr(1) * n).toFixed(2);
            // $(this).parent().parent().siblings(".press").prop("innerHTML","&yen;"+total);
            $(this).parent().parent().siblings(".press").html("&yen;"+total)
        }
        getSum()
    })
    // 减操作
    $(".sub").click(function(){
        var n = $(this).siblings(".input").children("input").val();
        // 获得单价
        // var press = $(this).parent().parent().siblings(".single").prop("innerHTML");
        var press = $(this).parents("td").siblings(".single").text();
        if(n > 0) {
            n--;
            $(this).siblings(".input").children("input").val(n);
            // 保留两位小数
            var total = parseFloat(press.substr(1) * n).toFixed(2);
            // $(this).parent().parent().siblings(".press").prop("innerHTML","&yen;"+total);
            $(this).parent().parent().siblings(".press").html("&yen;"+total)
        }
        getSum()
    })
    // 用户修改数量
    $(".input").children("input").change(function(){
        var n = $(this).val();
        $(this).parents("td").siblings(".single").text().substr()
        $(this).parents("td").siblings(".press").html("&yen;"+(n * $(this).parents("td").siblings(".single").text().substr(1)).toFixed(2))
        getSum();
    })
    // 4、底部删除选中的商品模块
    // 点击删除选中的商品后，复选框被选中的商品将被删除
    $(".foot-del").click(function(){
        // alert(1)
        // 选择商品中类名为all的一行删除
        $(".all:checked").parents("tr").remove();
        del();
        getSum();
    })

    // 5、底部删除清空模块
    //点击删除清空模块后，将删除所有的商品 把整个table删除
    $(".del-all").click(function(){
        $("tbody").empty();
        // alert(1);
        // $("table tr:first").nextAll().remove();
        // 当清空购物车后判断顶部和底部的全选矿是否为选中状态，如果是则归为
        del();
        getSum();
    })
    function del(){
        if($(".all-first").prop("checked")) {
            $(".all-first").prop("checked",false);
        }
    }
    // 6、底部总价模块
    // 商品个数由选中的每一个商品的个数相加的和，总价由选中的每一个商品的总价之和
    // 当进行加操作和减操作以及用户自己更改数目时都会进行总价数目更改,只有选中复选框的才会调用该函数，并且当复选框发生改变时也会调用该函数，一共有五个地方调用（数量加减、手动更改、复选框发生改变，全选）
    // 多个地方使用，则将该功能封装为一个函数
    function getSum(){
        var num = 0;//获得数目
        var pressAll = 0;//获得总价
        // 遍历每一个表单数目
        $(".all:checked").parent().siblings(".num").find("input").each(function(i,ele){
            // 将数目相加
            num += parseInt($(ele).val());
        })
        // 遍历每一行的总价
        $(".all:checked").parent().siblings(".press").each(function(i,ele){
            pressAll += parseFloat($(ele).text().substr(1));
            // pressAll.toFixed(2);
        })
        // 将num传给底部的总数
        $(".last b").text(num);
        $(".last .mon").text("￥"+pressAll.toFixed(2));
    }
    
    // 7、结算功能模块
    $(".last button").click(function(){
        var flag = confirm("确定要结算吗？您将付费"+$(".last .mon").text());
        if(flag) {
            alert("你选中的商品正在快马加鞭向你奔来！");
            // 如果选择结算后将选择商品和价钱归为0
            $(".last b").text(0);
            $(".last .mon").html("&yen;"+0.00);
            // 同时复选框取消选中，颜色归为默认
            // 先进行背景颜色的变化，在进行复选框的变化
            $(".all:checked").parents("tr").css("backgroundColor","");
            // 更改的数量也要归为默认值
            $(".all:checked").parent().siblings(".num").find("input").val(1);
            $(".all:checked").prop("checked",false);
            // 同时全选按钮也要取消勾选
            if($(".all-first").prop("checked")) {
                $(".all-first").prop("checked",false);
            }
        }else {
            alert("君要早点带我回家哦！")
        }
    })

    // 8、当鼠标经过tr时，当前的tr的颜色发生变化
    // console.log($("table tr:first").siblings());
    /* $("table tr:first").siblings().mouseover(function(){
        $(this).css("backgroundColor","#fbeeed");
        $(this).siblings().css("backgroundColor","");
    }) */
    // 选中的tr才会变背景颜色
})